package br.ufg.inf.espweb.sgca.web.controller;

import br.ufg.inf.espweb.sgca.model.Usuario;
import br.ufg.inf.espweb.sgca.service.UsuarioService;
import br.ufg.inf.espweb.sgca.service.exception.AutenticationException;
import br.ufg.inf.espweb.sgca.web.navegacao.Navegacao;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
import org.joda.time.LocalTime;
import org.omnifaces.util.Faces;
import org.omnifaces.util.Messages;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author diCastro
 */
@Controller("autenticacaoCtrl")
@Scope(value = "session")
public class AutenticacaoController implements Serializable{
    
    @Autowired
    private UsuarioService usuarioService;
    
    @Getter
    @Setter
    private String username;
    @Getter
    @Setter
    private String password;
    @Getter
    @Setter
    private Usuario usuario;
    
    public void login(){
        try {
            usuario = usuarioService.encontrar(username, password);
            if(usuario == null){
                Messages.addGlobalError("Usuário ou senha incorretos", "");
            }else{
                StringBuilder mensagem = new StringBuilder();
                LocalTime agora = LocalTime.now();
                
                if(agora.isAfter(new LocalTime(4, 0)) && agora.isBefore(new LocalTime(12, 0))){
                    mensagem.append("Bom dia, ");
                }else if(agora.isAfter(new LocalTime(12, 0)) && agora.isBefore(new LocalTime(18, 0))){
                    mensagem.append("Boa tarde, ");
                }else{
                    mensagem.append("Boa noite, ");
                }
                mensagem.append(usuario.getPessoa().getNome()).append("!");
                
                Messages.addGlobalInfo(mensagem.toString(), "");
                Navegacao.home();
            }
        } catch (AutenticationException ex) {
            Messages.addGlobalError(ex.getMessage(), "");
        }
    }
    
    public void logout(){
        usuario = null;
        Faces.getSession().invalidate();
    }
}
